<?php

class MaterialController extends ControllerBase {

    public function init() {
        parent::init();
        $this->defaultAction = 'admin';
    }

    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     */
    public function actionCreate() {
        $model = new Material;
        $lastID = Util::generalTableID(Material::model(), 'materialid');

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if (isset($_POST['Material'])) {
            if ($lastID)
                $model->materialid = ++$lastID;
            else
                $model->materialid = 0;

            $model->attributes = $_POST['Material'];
//            $model->storagequantity = preg_replace('/\\s/', '', $_POST['Material']['storagequantity']);
            $model->materiallimit = preg_replace('/\\s/', '', $_POST['Material']['materiallimit']);
            $model->addquantity = preg_replace('/\\s/', '', $_POST['Material']['addquantity']);
            $model->addprice = preg_replace('/\\s/', '', $_POST['Material']['addprice']);

            if ($model->save()) {
                $this->setMessage('Create Material Successful');
                $this->refresh();
            }
        }

        $this->render('create', array(
            'model' => $model,
        ));
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id the ID of the model to be updated
     */
    public function actionUpdate($id) {
        $model = $this->loadModel($id);

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if (isset($_POST['Material'])) {
            $model->attributes = $_POST['Material'];
//            $model->storagequantity = preg_replace('/\\s/', '', $_POST['Material']['storagequantity']);
            $model->materiallimit = preg_replace('/\\s/', '', $_POST['Material']['materiallimit']);
            $model->addquantity = preg_replace('/\\s/', '', $_POST['Material']['addquantity']);
            $model->addprice = preg_replace('/\\s/', '', $_POST['Material']['addprice']);

            if ($model->save()) {
                $this->setMessage('Update Material Successful');
                $this->refresh();
            }
        }

        $this->render('update', array(
            'model' => $model,
        ));
    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'admin' page.
     * @param integer $id the ID of the model to be deleted
     */
    public function actionDelete($id) {
        if (Yii::app()->request->isPostRequest) {
            // we only allow deletion via POST request
            $this->loadModel($id)->delete();

            // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if (!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        }
        else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    /**
     * Lists all models.
     */
    public function actionIndex() {
        $dataProvider = new CActiveDataProvider('Material');
        $this->render('index', array(
            'dataProvider' => $dataProvider,
        ));
    }

    /**
     * Manages all models.
     */
    public function actionAdmin() {
        $model = new Material('search');
        $model->unsetAttributes();  // clear any default values
        if (isset($_GET['Material']))
            $model->attributes = $_GET['Material'];

        $this->render('admin', array(
            'model' => $model,
        ));
    }

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     * @param integer the ID of the model to be loaded
     */
    public function loadModel($id) {
        $model = Material::model()->findByPk((int) $id);
        if ($model === null)
            throw new CHttpException(404, 'The requested page does not exist.');
        return $model;
    }

    /**
     * Performs the AJAX validation.
     * @param CModel the model to be validated
     */
    protected function performAjaxValidation($model) {
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'material-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
    }

    public function actionGetMaterialList() {
        $materialList = Material::model()->findAll();
        $list = array();

        foreach ($materialList as $key => $value) {
            $list = array(
                'materialid' => $value->materialid,
                'materialname' => $value->materialname,
                'storagequantity' => $value->storagequantity,
                'addquantity' => $value->addquantity,
                'addprice' => $value->addprice,
                'deliveredquantity' => $value->deliveredquantity,
                'unitid' => $value->unitid,
                'supplierid' => $value->supplierid
            );
            echo CJSON::encode($list);
        }
    }

    public function beforeAction($action) {
        parent::beforeAction($action);
        if (Yii::app()->user->id === null)
            $this->redirect(Yii::app()->createUrl('site/login'));
        return true;
        $this->redirect(Yii::app()->createUrl('site/login'));
    }

}
